/**
 * 根据子节点key查询所有层级的父节点key（适用于children嵌套结构）
 * @param {Array} tree 树形结构数组，每个节点包含key属性，子节点通过children数组嵌套
 * @param {string} targetKey 要查询的子节点key
 * @returns {Array} 父节点key数组（从直接父节点到顶层父节点），如无结果返回空数组
 */
export function findParentKeys(tree, targetKey) {
    // 用于存储找到的父节点路径
    const parentKeys = [];
    // 标记是否已找到目标节点
    let found = false;

    // 递归遍历函数
    function traverse(nodes, parents) {
        // 如果已找到目标节点，停止遍历
        if (found) return;

        for (const node of nodes) {
            // 检查当前节点的子节点中是否包含目标节点
            if (node.children && node.children.some(child => child.key === targetKey)) {
                // 找到直接父节点，记录路径
                parentKeys.push(...parents, node.key);
                found = true;
                return;
            }

            // 如果当前节点有子节点，继续递归遍历
            if (node.children && node.children.length > 0) {
                // 将当前节点key加入父路径，继续向下查找
                traverse(node.children, [...parents, node.key]);
                // 找到后停止遍历
                if (found) return;
            }
        }
    }

    // 启动遍历（初始父路径为空）
    traverse(tree, []);

    return parentKeys;
}
